﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EpsiRisk.AffichageJeu;
using EpsiRisk.DonneesPlateau;
using Microsoft.Xna.Framework.Content;

namespace EpsiRisk.MoteurJeu
{
    public class ClassDes
    {
        public ClassAffichageDe affichageDeBleu1;

        public ClassDe deBleu1;

        public ClassAffichageDe affichageDeBleu2;

        public ClassDe deBleu2;

        public ClassAffichageDe affichageDeRouge1;

        public ClassDe deRouge1;

        public ClassAffichageDe affichageDeRouge2;

        public ClassDe deRouge2;

        public ClassAffichageDe affichageDeRouge3;

        public ClassDe deRouge3;

        public void lancerLesDes()
        {
            deBleu1.Lancer();
            deBleu2.Lancer();
            deRouge1.Lancer();
            deRouge2.Lancer();
            deRouge3.Lancer();
        }


        public ClassDes(ContentManager content)
        {
            deBleu1 = new ClassDe("bleu");
            affichageDeBleu1 = new ClassAffichageDe(deBleu1);

            deBleu2 = new ClassDe("bleu");
            affichageDeBleu2 = new ClassAffichageDe(deBleu2);

            deRouge1 = new ClassDe("rouge");
            affichageDeRouge1 = new ClassAffichageDe(deRouge1);

            deRouge2 = new ClassDe("rouge");
            affichageDeRouge2 = new ClassAffichageDe(deRouge2);

            deRouge3 = new ClassDe("rouge");
            affichageDeRouge3 = new ClassAffichageDe(deRouge3);

        }

        public int maxBleu(int nbBleus)
        {
            switch (nbBleus)
            {
                case 1:
                    return ClassDonneesGlobales.des.deBleu1.valeur;
                case 2:
                    return Math.Max(ClassDonneesGlobales.des.deBleu1.valeur, ClassDonneesGlobales.des.deBleu2.valeur);
                default:
                    throw new Exception("Nb Des Bleus est 1 ou 2");
            }
        }

        public int secondBleu(int nbBleus)
        {
            switch (nbBleus)
            {
                case 1:
                    throw new Exception("Pas de second avec un seul de");
                case 2:
                    return Math.Min(ClassDonneesGlobales.des.deBleu1.valeur, ClassDonneesGlobales.des.deBleu2.valeur);
                default:
                    throw new Exception("Nb Des Bleus est 1 ou 2");
            }
        }

        public int maxRouge(int nbRouges)
        {
            switch (nbRouges)
            {
                case 1:
                    return ClassDonneesGlobales.des.deRouge1.valeur;
                case 2:
                    return Math.Max(ClassDonneesGlobales.des.deRouge1.valeur, ClassDonneesGlobales.des.deRouge2.valeur);
                case 3:
                    return Math.Max(Math.Max(ClassDonneesGlobales.des.deRouge1.valeur, ClassDonneesGlobales.des.deRouge2.valeur),ClassDonneesGlobales.des.deRouge3.valeur);
                default:
                    throw new Exception("Nb Des Bleus est 1 ou 2");
            }
        }

        public int secondRouge(int nbRouges)
        {
            switch (nbRouges)
            {
                case 1:
                    throw new Exception("Pas de second avec un seul de");
                case 2:
                    return Math.Min(ClassDonneesGlobales.des.deRouge1.valeur, ClassDonneesGlobales.des.deRouge2.valeur);
                case 3:
                    return Math.Max(Math.Max(Math.Min(ClassDonneesGlobales.des.deRouge1.valeur, ClassDonneesGlobales.des.deRouge2.valeur), Math.Min(ClassDonneesGlobales.des.deRouge2.valeur, ClassDonneesGlobales.des.deRouge3.valeur)), Math.Min(ClassDonneesGlobales.des.deRouge1.valeur, ClassDonneesGlobales.des.deRouge3.valeur));              
                default:
                    throw new Exception("Nb Des Bleus est 1 ou 2");
            }
        }

    }
}
